/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef JcqModel_h
#define JcqModel_h

@interface Queue :NSObject

/// QueueId
@property (strong,nonatomic,nonnull)  NSNumber*  queueId;

/// QueuePermission
@property (strong,nonatomic,nonnull)  NSString*  queuePermission;


-(id) initWithQueueId:(NSNumber*) queueId
    queuePermission:(NSString*)queuePermission;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Tag :NSObject

/// 标签的键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// 标签的值
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithKey:(NSString*) key
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TopicConfig :NSObject

/// 消息最大长度
@property (strong,nonatomic,nonnull)  NSNumber*  maxMessageSizeKB;

/// tps
@property (strong,nonatomic,nonnull)  NSNumber*  threshold;

/// topicPermission
@property (strong,nonatomic,nonnull)  NSString*  topicPermission;

/// topicType
@property (strong,nonatomic,nonnull)  NSString*  topicType;


-(id) initWithMaxMessageSizeKB:(NSNumber*) maxMessageSizeKB
    threshold:(NSNumber*)threshold
    topicPermission:(NSString*)topicPermission
    topicType:(NSString*)topicType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Subscription :NSObject

/// consumerGroupId
@property (strong,nonatomic,nonnull)  NSString*  consumerGroupId;

/// endPoint
@property (strong,nonatomic,nonnull)  NSString*  endPoint;

/// messageInvisibleTimeInSeconds
@property (strong,nonatomic,nonnull)  NSNumber*  messageInvisibleTimeInSeconds;

/// subscriptionType
@property (strong,nonatomic,nonnull)  NSString*  subscriptionType;

/// tags
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  tags;

/// 是否开启死信队列
@property (strong,nonatomic,nonnull)  NSNumber*  dlqEnable;

/// 最大重试次数
@property (strong,nonatomic,nonnull)  NSNumber*  maxRetryTimes;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 最后更新时间
@property (strong,nonatomic,nonnull)  NSString*  lastUpdateTime;

/// 在线consumer个数
@property (strong,nonatomic,nonnull)  NSNumber*  consumerNumbers;


-(id) initWithConsumerGroupId:(NSString*) consumerGroupId
    endPoint:(NSString*)endPoint
    messageInvisibleTimeInSeconds:(NSNumber*)messageInvisibleTimeInSeconds
    subscriptionType:(NSString*)subscriptionType
    tags:(NSArray<NSString*>*)tags
    dlqEnable:(NSNumber*)dlqEnable
    maxRetryTimes:(NSNumber*)maxRetryTimes
    createTime:(NSString*)createTime
    lastUpdateTime:(NSString*)lastUpdateTime
    consumerNumbers:(NSNumber*)consumerNumbers;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ConsumerInfoDetail :NSObject

/// 消费者IP地址
@property (strong,nonatomic,nonnull)  NSString*  consumerIp;

/// 消费时间戳(millionSecond)
@property (strong,nonatomic,nonnull)  NSNumber*  timeStamp;

/// 消费耗时(second)
@property (strong,nonatomic,nonnull)  NSNumber*  costTime;

/// 第几次消费
@property (strong,nonatomic,nonnull)  NSNumber*  consumeTimes;

/// 消费状态[SUCCESS,FAILED_WITHOUT_RESULT,FAILED_WITH_RESULT]
@property (strong,nonatomic,nonnull)  NSString*  consumerStatus;


-(id) initWithConsumerIp:(NSString*) consumerIp
    timeStamp:(NSNumber*)timeStamp
    costTime:(NSNumber*)costTime
    consumeTimes:(NSNumber*)consumeTimes
    consumerStatus:(NSString*)consumerStatus;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProduceInfo :NSObject

/// 生产者地址
@property (strong,nonatomic,nonnull)  NSString*  address;

/// 发送时间戳(millionSecond)
@property (strong,nonatomic,nonnull)  NSNumber*  timeStamp;

/// 发送耗时(millionSecond)
@property (strong,nonatomic,nonnull)  NSNumber*  costTime;

/// 发送状态[SUCCESS_NORMAL,FAILED,SUCCESS_DELAY]
@property (strong,nonatomic,nonnull)  NSString*  messageSendStatus;

/// 延时消息的延迟时间(second)
@property (strong,nonatomic,nonnull)  NSNumber*  delayTime;


-(id) initWithAddress:(NSString*) address
    timeStamp:(NSNumber*)timeStamp
    costTime:(NSNumber*)costTime
    messageSendStatus:(NSString*)messageSendStatus
    delayTime:(NSNumber*)delayTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DeadLetter :NSObject

/// id
@property (strong,nonatomic,nonnull)  NSString*  messageId;

/// 过期时间
@property (strong,nonatomic,nonnull)  NSString*  expireTime;


-(id) initWithMessageId:(NSString*) messageId
    expireTime:(NSString*)expireTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Permission :NSObject

/// userId
@property (strong,nonatomic,nonnull)  NSString*  userId;

/// permission, [SUB, PUB, PUBSUB]
@property (strong,nonatomic,nonnull)  NSString*  permissionValue;


-(id) initWithUserId:(NSString*) userId
    permissionValue:(NSString*)permissionValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DeadLetterNumber :NSObject

/// topic的编号
@property (strong,nonatomic,nonnull)  NSString*  topicId;

/// topic名称
@property (strong,nonatomic,nonnull)  NSString*  topicName;

/// consumerGroupId
@property (strong,nonatomic,nonnull)  NSString*  consumerGroupId;

/// 死信队列数
@property (strong,nonatomic,nonnull)  NSNumber*  deadLetterNumberValue;


-(id) initWithTopicId:(NSString*) topicId
    topicName:(NSString*)topicName
    consumerGroupId:(NSString*)consumerGroupId
    deadLetterNumberValue:(NSNumber*)deadLetterNumberValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Message :NSObject

/// 消息id
@property (strong,nonatomic,nonnull)  NSString*  messageId;

/// 内容
@property (strong,nonatomic,nonnull)  NSString*  body;

/// tag以逗号隔开
@property (strong,nonatomic,nonnull)  NSString*  tags;

/// 用户设置的属性json字符串
@property (strong,nonatomic,nonnull)  NSString*  properties;

/// 消息的存储时间
@property (strong,nonatomic,nonnull)  NSNumber*  storeTime;


-(id) initWithMessageId:(NSString*) messageId
    body:(NSString*)body
    tags:(NSString*)tags
    properties:(NSString*)properties
    storeTime:(NSNumber*)storeTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AccessPoint :NSObject

/// sdk接入点
@property (strong,nonatomic,nonnull)  NSString*  sdkAddress;

/// http接入点
@property (strong,nonatomic,nonnull)  NSString*  httpAddress;


-(id) initWithSdkAddress:(NSString*) sdkAddress
    httpAddress:(NSString*)httpAddress;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TopicRouteInfo :NSObject

/// BrokerAddress
@property (strong,nonatomic,nonnull)  NSString*  brokerAddress;

/// Queues
@property (strong,nonatomic,nonnull)  NSArray<Queue*>*  queues;


-(id) initWithBrokerAddress:(NSString*) brokerAddress
    queues:(NSArray<Queue*>*)queues;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Topic :NSObject

/// topic Id
@property (strong,nonatomic,nonnull)  NSString*  topicId;

/// topic名称
@property (strong,nonatomic,nonnull)  NSString*  topicName;

/// 描述
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 更新时间
@property (strong,nonatomic,nonnull)  NSString*  lastUpdateTime;

/// topicStatus
@property (strong,nonatomic,nonnull)  NSString*  topicStatus;

/// 自己创建的订阅数
@property (strong,nonatomic,nonnull)  NSNumber*  subscriptionCount;

/// 消息生命周期时长小时
@property (strong,nonatomic,nonnull)  NSNumber*  messageLifeTimeInHours;

/// 配置信息
@property (strong,nonatomic,nonnull)  TopicConfig*  topicConfig;

/// 是否是自己的topic
@property (strong,nonatomic,nonnull)  NSNumber*  own;

/// 被授权的权限[PUB,SUB,PUBSUB,READ_ONLY,ADMIN]
@property (strong,nonatomic,nonnull)  NSString*  authorizedPermission;

/// 标签信息
@property (strong,nonatomic,nonnull)  NSArray<Tag*>*  tags;


-(id) initWithTopicId:(NSString*) topicId
    topicName:(NSString*)topicName
    descriptionValue:(NSString*)descriptionValue
    createTime:(NSString*)createTime
    lastUpdateTime:(NSString*)lastUpdateTime
    topicStatus:(NSString*)topicStatus
    subscriptionCount:(NSNumber*)subscriptionCount
    messageLifeTimeInHours:(NSNumber*)messageLifeTimeInHours
    topicConfig:(TopicConfig*)topicConfig
    own:(NSNumber*)own
    authorizedPermission:(NSString*)authorizedPermission
    tags:(NSArray<Tag*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ConsumeInfo :NSObject

/// 消费组名称
@property (strong,nonatomic,nonnull)  NSString*  consumerGroupId;

/// 消费状态[SUCCESS,UNCONSUMED,FAILED_RETRY,ALL_FAILED,UNKNOWN]
@property (strong,nonatomic,nonnull)  NSString*  messageConsumeStatus;

/// 消费成功次数
@property (strong,nonatomic,nonnull)  NSNumber*  successTimes;

/// 消费失败次数
@property (strong,nonatomic,nonnull)  NSNumber*  failedTimes;

/// 消费组下面消费者详情
@property (strong,nonatomic,nonnull)  NSArray<ConsumerInfoDetail*>*  consumerInfoDetailList;


-(id) initWithConsumerGroupId:(NSString*) consumerGroupId
    messageConsumeStatus:(NSString*)messageConsumeStatus
    successTimes:(NSNumber*)successTimes
    failedTimes:(NSNumber*)failedTimes
    consumerInfoDetailList:(NSArray<ConsumerInfoDetail*>*)consumerInfoDetailList;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface MessageTraceInfo :NSObject

/// 生产消息详情
@property (strong,nonatomic,nonnull)  ProduceInfo*  produceInfo;

/// 消费消息详情
@property (strong,nonatomic,nonnull)  NSArray<ConsumeInfo*>*  consumeInfoList;


-(id) initWithProduceInfo:(ProduceInfo*) produceInfo
    consumeInfoList:(NSArray<ConsumeInfo*>*)consumeInfoList;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TopicWrapper :NSObject

/// Topic
@property (strong,nonatomic,nonnull)  Topic*  topic;

/// RouteInfos
@property (strong,nonatomic,nonnull)  NSArray<TopicRouteInfo*>*  routeInfos;


-(id) initWithTopic:(Topic*) topic
    routeInfos:(NSArray<TopicRouteInfo*>*)routeInfos;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* JcqModel_h */
